import java.util.Arrays;
import java.util.List;

public class merge {
    /**
     * 合并区间，以数组intervals表示若干区间的集合，
     * 单个区间intervals[i]是[start， end]。
     * 请你合并所有重叠区间，返回一个不重叠的区间数组，此数组恰好覆盖输出中的所有区间即可；
     */
    public static int[][]method(int[][] intervals){
        int length = intervals.length;
        int[][] merge =new int[length][2];
        // 对数组的左端点进行排序,从大到小进行
        Arrays.sort(intervals,(x,y)->{
            return x[0]-y[0];
        });
        // 将第一个数值直接放入数组初始化
        merge[0] = intervals[0];
        int index = 0; //新数组的最后
        // 循环遍历
        for(int i=1; i<length; i++){
            if(intervals[i][0] > merge[index][1]){
                merge[++index] = intervals[i];
            }else {
                merge[index][1] = Math.max(intervals[i][1], merge[index][1]);
            }
        }
        return Arrays.copyOf(merge, index+1);
    }


    public static void main(String[] args) {
        int[][]test = {{1,3},{2,6},{8,10},{15,18}};
        int[][] kk =method(test);
        for(int[] rr: kk){
            System.out.println(Arrays.toString(rr));
        }
    }
}
